package br.com.dallasmotopecas.comum.produto.vo;

import java.io.Serializable;

import br.com.dallasmotopecas.comum.fabricante.vo.FabricanteVo;
import br.com.dallasmotopecas.util.vo.EntidadeVo;

public class ProdutoGiroDetalheVo extends EntidadeVo implements Serializable, Comparable<ProdutoGiroDetalheVo>
{
	private static final long serialVersionUID = 1L;
	private ProdutoGiroVo produtoGiroVo;
	private String descricao;
	private FabricanteVo fabricanteVo;
	private double quantidadeDisponivel;
	private double quantidadeReposta;
	private double valor;
	
	public ProdutoGiroDetalheVo()
	{
		
	}

	public ProdutoGiroVo getProdutoGiroVo()
	{
		if (produtoGiroVo == null) produtoGiroVo = new ProdutoGiroVo();
		
		return produtoGiroVo;
	}

	public void setProdutoGiroVo(ProdutoGiroVo produtoGiroVo)
	{
		this.produtoGiroVo = produtoGiroVo;
	}

	public String getDescricao()
	{
		return descricao;
	}

	public void setDescricao(String descricao)
	{
		this.descricao = descricao;
	}

	public FabricanteVo getFabricanteVo()
	{
		if (fabricanteVo == null) fabricanteVo = new FabricanteVo();
		
		return fabricanteVo;
	}

	public void setFabricanteVo(FabricanteVo fabricanteVo)
	{
		this.fabricanteVo = fabricanteVo;
	}

	public double getQuantidadeDisponivel()
	{
		return quantidadeDisponivel;
	}

	public void setQuantidadeDisponivel(double quantidadeDisponivel)
	{
		this.quantidadeDisponivel = quantidadeDisponivel;
	}

	public double getQuantidadeReposta()
	{
		return quantidadeReposta;
	}

	public void setQuantidadeReposta(double quantidadeReposta)
	{
		this.quantidadeReposta = quantidadeReposta;
	}

	public double getValor()
	{
		return valor;
	}

	public void setValor(double valor)
	{
		this.valor = valor;
	}

	@Override
	public int hashCode()
	{
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((descricao == null) ? 0 : descricao.hashCode());
		result = prime * result
				+ ((fabricanteVo == null) ? 0 : fabricanteVo.hashCode());
		result = prime * result
				+ ((produtoGiroVo == null) ? 0 : produtoGiroVo.hashCode());
		long temp;
		temp = Double.doubleToLongBits(quantidadeDisponivel);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(quantidadeReposta);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(valor);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj)
	{
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		ProdutoGiroDetalheVo other = (ProdutoGiroDetalheVo) obj;
		if (descricao == null)
		{
			if (other.descricao != null)
				return false;
		}
		else if (!descricao.equals(other.descricao))
			return false;
		if (fabricanteVo == null)
		{
			if (other.fabricanteVo != null)
				return false;
		}
		else if (!fabricanteVo.equals(other.fabricanteVo))
			return false;
		if (produtoGiroVo == null)
		{
			if (other.produtoGiroVo != null)
				return false;
		}
		else if (!produtoGiroVo.equals(other.produtoGiroVo))
			return false;
		if (Double.doubleToLongBits(quantidadeDisponivel) != Double
				.doubleToLongBits(other.quantidadeDisponivel))
			return false;
		if (Double.doubleToLongBits(quantidadeReposta) != Double
				.doubleToLongBits(other.quantidadeReposta))
			return false;
		if (Double.doubleToLongBits(valor) != Double
				.doubleToLongBits(other.valor))
			return false;
		return true;
	}

	@Override
	public int compareTo(ProdutoGiroDetalheVo o)
	{
		return this.descricao.compareTo(o.descricao);
	}
}
